/**
 * Copyright (C), 2015-2021, XXX有限公司
 * FileName: MyConfig
 * Author:   AEO WUGUOZHI
 * Date:     2021/3/31 21:19
 * Description: 配置类
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.bnuz.config;

import com.bnuz.boot.bean.Car;
import com.bnuz.boot.bean.Pet;
import com.bnuz.boot.bean.User;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

/**
 * 〈一句话功能简述〉<br> 
 * 〈配置类〉
 *
 * @author AEO WUGUOZHI
 * @create 2021/3/31
 * @since 1.0.0
 */

/**
 * (proxyBeanMethods):代理bean的方法
 * Full模式(proxyBeanMethods = true)      ->  组件依赖。
 * Lite模式(proxyBeanMetheds = false)
 */

@Configuration(proxyBeanMethods = false)       //告诉SpringBoot这是一个配置类 == 配置文件   true 就代理，保证组件单例
@ImportResource("classpath:beans.xml")
//声明Car.class开启了配置属性功能。
@EnableConfigurationProperties(Car.class)
public class MyConfig {

    /**
     * @return
     * 外部无论对配置类中的这个组件注册方法调用多少次，获取的都是之前注册容器的单实例对象
     */
    @Bean("userNo1")       //给容器添加组件，以方法名作为组件的id。返回类型就是组件类型，返回的值就是组件在容器中的实例。 @Bean("组件名称")
    public User usero1(){
        return new User("张三",18);
    }

    @Bean("tomcat")
    public Pet pet01(){
        return new Pet("Tomcat",3);
    }
}